<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title></title>
    <script type="text/javascript">

        /*
         * 运算符也叫操作符
         * 	通过运算符可以对一个或多个值进行运算,并获取运算结果
         * 	比如：typeof就是运算符，可以来获得一个值的类型
         * 		它会将该值的类型以字符串的形式返回
         * 		number string boolean undefined object
         *
         * 	算数运算符
         * 		当对非Number类型的值进行运算时，会将这些值转换为Number然后在运算
         * 			任何值和NaN做运算都得NaN
         *
         * 		+
         * 			+可以对两个值进行加法运算，并将结果返回
         * 			 如果对两个字符串进行加法运算，则会做拼串
         * 				会将两个字符串拼接为一个字符串，并返回
         * 			任何的值和字符串做加法运算，都会先转换为字符串，然后再和字符串做拼串的操作
         * 		-
         * 			- 可以对两个值进行减法运算，并将结果返回
         *
         * 		*
         * 			* 可以对两个值进行乘法运算
         * 		/
         * 			/ 可以对两个值进行除法运算
         * 		%
         * 			% 取模运算（取余数）
         */

        var a = 123;
        // 获取类型
        var result = typeof a;
        // typeof它会将该值的类型以字符串的形式返回
        console.log(typeof result);

        console.log("******************************加法*****************************")

        // +加法
        result = a + 1;
        result = 456 + 789;
        console.log(result);

        result = true + 1;
        console.log(result);

        result = true + false;
        console.log(result);

        result = 2 + null;
        // null转成数字0
        console.log(result);

        result = 2 + NaN;
        // 任何值和NaN做运算都得NaN
        console.log(result);

        // 字符串相加等于拼接
        result = "你好" + "大帅哥";
        var str = "锄禾日当午，" +
            "汗滴禾下土，" +
            "谁知盘中餐，" +
            "粒粒皆辛苦";
        console.log(result);


        result = 123 + "1";
        // 输出1231
        console.log(result);

        result = true + "hello";
        // 输出truehello
        console.log(result);

        //任何值和字符串相加都会转换为字符串，并做拼串操作
        /*
         * 可以利用这一特点，来将一个任意的数据类型转换为String
         * 	只需要为任意的数据类型 + 一个 "" 即可将其转换为String
         * 	这是一种隐式的类型转换，由浏览器自动完成，实际上它也是调用String()函数
         */
        var c = 123;
        c = c + "";
        //c = null;
        //c = c + "";
        console.log(typeof c);
        console.log("c = " + c);

        result = 1 + 2 + "3"; //33
        result = "1" + 2 + 3; //123
        console.log(result);

        console.log("******************************减法*****************************")

        // -减法
        result = 100 - 5;
        result = 100 - true;
        result = 100 - "1";
        console.log(result);
        result = 100 - "a";
        console.log(result);

        console.log("******************************乘法*****************************")

        // *乘法
        result = 2 * 2;
        result = 2 * "8";
        result = 2 * undefined;
        result = 2 * null;
        console.log(result);

        console.log("******************************除法*****************************")

        // /除法
        result = 4 / 2;
        result = 3 / 2;
        console.log(result);

        /*
         * 任何值做- * /运算时都会自动转换为Number
         * 	可以利用这一特点做隐式的类型转换
         * 		可以通过为一个值 -0 *1 /1来将其转换为Number
         * 		原理和Number()函数一样，使用起来更加简单
         */
        var d = "123";
        d = d - 0;
        console.log(typeof d);
        console.log(d);

        console.log("******************************取余*****************************")

        // %取余
        result = 9 % 3;
        result = 9 % 4;
        result = 9 % 5;

        console.log("result = " + result);

    </script>
</head>
<body>
</body>
</html>
